<?php

class Common_CommonController extends Zend_Controller_Action {

    public function init() {
        /* Initialize action controller here */
    }

    public function indexAction() {
        // action body
    }

    public function permisosdataAction() {
//		$this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $json_rowData = $this->getRequest()->getParam("aplicacion");
        
        
        $user = $_SESSION['user'];
        $codigoUsuario = $_SESSION['cod_user'];
//        $user = 'PRUEBA'; $codigoUsuario = 7;
        $aplicacionCod = 15;
        // que queres consultar? true = aplicacion; false = boton
        //verificamos a que grupo pertenece el usuario
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('a' => 'usuarios'), array('a.cod_grupo_usuario'))
                ->where('a.USER = ?', $user);
        $result = $db->fetchAll($select);
        //seteamos el codigo de grupo de usuario
        $grupoUser = $result[0]['cod_grupo_usuario'];

        if (isset($grupoUser) && $grupoUser > 0) {
            //Si tiene un grupo se busca los permisos en el grupo
            $db = Zend_Db_Table::getDefaultAdapter();
            $selectPermisosGrupos = $db->select()
                    ->from(array('a' => 'det_grupo_usuario'), array('a.permiso_insert', 'a.permiso_update', 'a.permiso_delete', 'a.permiso_list'))
                    ->where('a.id_det_grupo_usuario = ?', $grupoUser)
                    ->where('a.cod_aplicacion = ?', $aplicacionCod);
            $permisosGrupos = $db->fetchAll($selectPermisosGrupos);
            if (isset($permisosGrupos[0]))
            //si tiene permisos el grupo se le asigna
                $permisoAsignado = $permisosGrupos[0];

            // verificamos si tiene permiso especiales el usuario
            $selectPermisosUsuarios = $db->select()
                    ->from(array('a' => 'usuario_aplicacion'), array('a.permiso_insert', 'a.permiso_update', 'a.permiso_delete', 'a.permiso_list'))
                    ->where('a.cod_usuario = ?', $codigoUsuario)
                    ->where('a.cod_aplicacion = ?', $aplicacionCod);
            $permisosUsuarios = $db->fetchAll($selectPermisosUsuarios);
            if (isset($permisosUsuarios[0]))
            //si tiene permisos especiales el usuario se sobre escribe porque estos priman a los grupo
                $permisoAsignado = $permisosUsuarios[0];

            if (!isset($permisoAsignado))
            //si no tiene permisos por grupo ni especiales se retorna sin permiso
                $permisoAsignado = array("Permiso" => "NO");
        }else {
            //si no tiene grupo asgnado se buscan permisos especiales por usuario
            $selectPermisosUsuarios = $db->select()
                    ->from(array('a' => 'usuario_aplicacion'), array('a.permiso_insert', 'a.permiso_update', 'a.permiso_delete', 'a.permiso_list'))
                    ->where('a.cod_usuario = ?', $codigoUsuario)
                    ->where('a.cod_aplicacion = ?', $aplicacionCod);
            $permisosUsuarios = $db->fetchAll($selectPermisosUsuarios);
            if (isset($permisosUsuarios[0]))
            //si tiene permisos especiales el usuario se sobre escribe porque estos priman a los grupo
                $permisoAsignado = $permisosUsuarios[0];
            if (!isset($permisoAsignado))
            //si no tiene permisos por grupo ni especiales se retorna sin permiso
                $permisoAsignado = array("permiso" => "NO");
        }

        if (!isset($permisoAsignado["permiso"])) {
            $permisosNamespace = new Zend_Session_Namespace('permisos');
            $permisosNamespace->unlock();
            $permisosNamespace->permiso_insert = $permisoAsignado['permiso_insert'];
            $permisosNamespace->permiso_update = $permisoAsignado['permiso_update'];
            $permisosNamespace->permiso_delete = $permisoAsignado['permiso_delete'];
            $permisosNamespace->permiso_list = $permisoAsignado['permiso_list'];
            $permisosNamespace->lock();
            echo json_encode(array("result" => "EXITO"));
        } else {
            echo json_encode(array("result" => "SINPERMISO"));
        }
    }

    public function permisosdata2Action() {
        $this->_helper->viewRenderer->setNoRender(true);
        $datos = $this->getRequest()->getParam("datos");

        $userInfo = new Zend_Session_Namespace('userInfo');
        $userInfo->unlock();
        $user = $userInfo->user;
        $codigoUsuario = $userInfo->cod_user;
        $userInfo->lock();
        $accion = $datos['accion'];
        $aplicacionCod = $datos['id'];
        // que queres consultar? true = aplicacion; false = boton
        //verificamos a que grupo pertenece el usuario


        if ($accion == 'true') {
            //si es true, entonces consulta por una aplicacion
            //primero vemos los permisos del grupo
            $db = Zend_Db_Table::getDefaultAdapter();
            $selectPermisosGrupos = $db->select()
                    ->from(array('a' => 'det_grupo_usuario'), 
                           array('a.permiso_insert', 'a.permiso_update', 'a.permiso_delete', 'a.permiso_list'))
                    ->join(array('u' => 'usuarios'), 'u.cod_grupo_usuario = a.id_det_grupo_usuario')
                    ->where('u.USER = ?', $user)
                    ->where('a.cod_aplicacion = ?', $aplicacionCod);
            $permisosGrupos = $db->fetchAll($selectPermisosGrupos);
            if (isset($permisosGrupos[0]))
            //si tiene permisos el grupo se le asigna
                $permisoAsignado = $permisosGrupos[0];

            // verificamos si tiene permiso especiales el usuario
            $selectPermisosUsuarios = $db->select()
                    ->from(array('a' => 'usuario_aplicacion'), 
                           array('a.permiso_insert', 'a.permiso_update', 'a.permiso_delete', 'a.permiso_list'))
                    ->where('a.cod_usuario = ?', $codigoUsuario)
                    ->where('a.cod_aplicacion = ?', $aplicacionCod);
            $permisosUsuarios = $db->fetchAll($selectPermisosUsuarios);
            if (isset($permisosUsuarios[0]))
            //si tiene permisos especiales el usuario se sobre escribe porque estos priman a los grupo
                $permisoAsignado = $permisosUsuarios[0];
            if (isset($permisoAsignado)) {
                $permisosNamespace = new Zend_Session_Namespace('permisos');
                $permisosNamespace->unlock();
                $permisosNamespace->permiso_insert = $permisoAsignado['permiso_insert'];
                $permisosNamespace->permiso_update = $permisoAsignado['permiso_update'];
                $permisosNamespace->permiso_delete = $permisoAsignado['permiso_delete'];
                $permisosNamespace->permiso_list = $permisoAsignado['permiso_list'];
                $permisosNamespace->lock();
                echo json_encode(array("result" => "EXITO"));
            } else {
                echo json_encode(array("result" => "SINPERMISO"));
            }
        } else {
            $db = Zend_Db_Table::getDefaultAdapter();
            $selectPermisosGrupos = $db->select()
                    ->from(array('a' => 'det_grupo_usuario'), array('a.permiso_otros'))
                    ->join(array('u' => 'usuarios'), 'u.cod_grupo_usuario = a.id_det_grupo_usuario')
                    ->where('u.USER = ?', $user)
                    ->where('a.cod_aplicacion = ?', $aplicacionCod);
            $permisosGrupos = $db->fetchAll($selectPermisosGrupos);
            if (isset($permisosGrupos[0]))
            //si tiene permisos el grupo se le asigna
                $permisoAsignado = $permisosGrupos[0];

            // verificamos si tiene permiso especiales el usuario
            $selectPermisosUsuarios = $db->select()
                    ->from(array('a' => 'usuario_aplicacion'), array('a.permiso_otros'))
                    ->where('a.cod_usuario = ?', $codigoUsuario)
                    ->where('a.cod_aplicacion = ?', $aplicacionCod);
            $permisosUsuarios = $db->fetchAll($selectPermisosUsuarios);
            if (isset($permisosUsuarios[0]))
            //si tiene permisos especiales el usuario se sobre escribe porque estos priman a los grupo
                $permisoAsignado = $permisosUsuarios[0];
            if (!isset($permisoAsignado)) {
                //si no tiene permisos por grupo ni especiales se retorna sin permiso
                echo json_encode(array("result" => "NO"));
            } else if ($permisoAsignado['permiso_otros'] == 'N') {
                echo json_encode(array("result" => "NO"));
            } else if ($permisoAsignado['permiso_otros'] == 'S') {
                echo json_encode(array("result" => "SI"));
            }
        }
    }

}

